package com.itany.corejava.code09_集合.zuoye2;

/**
 * @author MissChen
 * @version 1.0
 * @date 2023 年11月22日 17:31
 */

import java.util.*;
import java.util.Map.Entry;

/**
 * 控制台输入一个字符串，统计每个字符串出现的次数，保存到HashMap集合中
 * 通过排序，打印输出次数最多的前三个字符及次数
 */
public class Test04_练习 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.print("请输入一个字符串:");
        String s=sc.next();//abcaa
        HashMap<Character,Integer> map=new HashMap<>();
        for(int i=0;i<s.length();i++){
            char c=s.charAt(i);
            map.put(c,map.containsKey(c)?map.get(c)+1:1);

        }
        System.out.println(map);
        Set<Entry<Character,Integer>> entries=map.entrySet();

        //将Set集合的数据转换为List集合
        List<Entry<Character,Integer>> list=new ArrayList<>(entries);

        Collections.sort(list, new Comparator<Entry<Character, Integer>>() {
            @Override
            public int compare(Entry<Character, Integer> o1, Entry<Character, Integer> o2) {
                if(o1.getValue()>o2.getValue()){
                    return -1;
                }else if(o1.getValue()<o2.getValue()){
                    return 1;
                }
                return 0;
            }
        });
        for(int i=0;i<3;i++){
            Entry<Character,Integer> entry=list.get(i);
            System.out.println("字符:"+entry.getKey()+",出现的次数:"+entry.getValue());
        }


    }
}
